﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

//int _scount = 0;
//
//class A
//{
//public:
//    A() { ++_scount; }
//    A(const A& t) { ++_scount; }
//    ~A() { --_scount; }
//    /*static int GetACount() { return _scount; }*/
//private:
//    /*static int _scount;*/
//};

//
//int main()
//{
//    return 0;
//}


//class A
//{
//public:
//    A() { ++_scount; }
//    A(const A& t) { ++_scount; }
//    ~A() { --_scount; }
//    int GetACount() 
//    { 
//        return 1;
//    }
//private:
//    static int _scount;
//};
// 
//int A::_scount = 0;
//A aa0;  
//void Func()
//{
//    static A aa2;
//    
//    // 全局变量的劣势：任何地方都可以随意改变
//
//}   
    
//int main()
//{
//    //cout <<__LINE__<<":"<< A::GetACount() << endl;  // 1
//    A aa1;
//    //Func();  // 3
//    cout << __LINE__ << ":" << aa1.GetACount() << endl;  // 1
//    /*Func(); */ // 3
//    //cout << __LINE__ << ":" << A::GetACount() << endl;  // 1
//    
//    return 0;
//}

//struct Stack
//{
//public:
//    void StackInit()
//    {
//        //省略
//    }
//    void StackPush()
//    {
//        //....
//    }
//    void StackPop()
//    {
//        //....
//    }
//private:
//    int* _a;
//    int top;
//    int capacity;
//};
//
//class Data
//{
//public:
//    void Init(int year, int month, int day);//声明
//private:
//    //这是声明不是初始化即使给了值也是缺省值不是初始化
//    int _year;
//    int _month;
//    int _day;
//};
//
////在类外面定义的时候需给::作用域操作符
//void Data::Init(int year, int month, int day)
//{
//    _year = year;
//    _month = month;
//    _day = day;
//}

//class A
//{
//public:
//    void PrintA()
//    {
//        cout << _a << endl;
//    }
//private:
//    char _a;
//    int _b;
//    int _c;
//};
//
//int main()
//{
//    A a;//类的实例化
//    cout << sizeof(a) << endl;
//    cout << sizeof(A) << endl;
//    return 0;
//}

// 既有成员变量，也有成员函数
//class A
//{
//	void PrintA()
//	{
//		// ...
//	}
//private:
//	int _a;
//	int _b;
//};
//
//// 仅有成员函数
//class B
//{
//	void PrintB1()
//	{
//		//...
//	}
//	void PrintB2()
//	{
//		//...
//	}
//};
//
//// 空类
//class C
//{
//
//};
//
//
//int main()
//{
//	cout << sizeof(A) << endl;
//	cout << sizeof(B) << endl;
//	cout << sizeof(C) << endl;
//
//	return 0;
//}


//class Date
//{
//public:
//    void Init(int year, int month, int day)
//    {
//        _year = year;
//        _month = month;
//        _day = day;
//    }
//    void Print()
//    {
//        cout << _year << "-" << _month << "-" << _day << endl;
//    }
//private:
//
//    int _year;      // 年
//    int _month;     // 月
//    int _day;       // 日
//};
//
//int main()
//{
//    Date d1, d2;
//    d1.Init(2022, 1, 11);
//    d2.Init(2022, 1, 12);
//    d1.Print();
//    d2.Print();
//    return 0;
//}

// 下面程序编译运行结果是？ A、编译报错 B、运行崩溃 C、正常运行
//class A
//{
//public:
//	void Print()
//	{
//		cout << "Print()" << endl;
//	}
//private:
//	int _a;
//};
//int main()
//{
//	A* p = nullptr;
//	p->Print();
//	return 0;
//}

下面程序编译运行结果是？ A、编译报错 B、运行崩溃 C、正常运行
class A
{
public:
	void Print()
	{
		cout << "Print()" << endl;
	}
private:
	int _a;
};
int main()
{
	A* p = nullptr;
	(*p).Print();
	return 0;
}



